<?php
	
	class Verifyimg
	{
		
		private $nav = 'index.php';
		
		private $session_code = "verification_code";
		
		public function createImg($w = 200,$h = 50, $useLayers = FALSE)
		{
			// Sätter hedern på filen som en jpeg bild.
			header("Pragma: no-cache");
			header('Cache-control: no-store, no-cache, must-revalidate');
			header("Content-type: image/gif");
			
			// skriver in dom olika värderna str_shuffle slumpar fram olika värden.
			$text = substr(str_shuffle("123456789acdefghijkmpqrstuvwxyACDEFGHJKLMPQRSTUVWXY"), 0, 5);
			
			//storleken på captcha tecknen. Ceil avrundar uppåt.
			$fsize = ceil($h/2.5);
			
			// Fonten som används.
			$font = "font3.ttf";
			
			// Vänster marginal på texten beroende på bredden på captchan.
			$spacing = ceil($w/30);
			
			// Höjden på textrutan beroende på höjden på captchan
			$heigt = ceil($h/1.5);
			
			// Styrka på blureffekten
			$strength = 400; 
			
			// Ställer in RGB-färgen.
			$red = 120;
			$green = 187;
			$blue = 154;

			// Skapar bilden om det inte lyckas kommer ett felmeddelande.
			$im = imagecreatetruecolor($w, $h)
				or die("Cannot Initialize new GD image stream");
			
			// Ger RGB-Färg på texten.
			$text_color = imagecolorallocate($im, $red, $green, $blue);
			
			//En session för att kolla om koden är rätt.
			$_SESSION[$this->session_code] = $text;
	
			//Skapar bakgrunden
			$background = ImageCreateFrompng("back2.png");
			
			// ser till att backgrunden passar beroende på längd och höjd
			$rand_x = mt_rand(0, 500-$w);
			$rand_y = mt_rand(0, 500-$h);
			
			// Lägger på bilden
			imagecopy($im, $background, 0, 0, $rand_x,$rand_y, $w, $h);
			
			// Om lager stöds skapas dom.
			if ($useLayers)
			{
				
				$layer1 = ImageCreateFrompng("layer3.png");
				$layer2 = ImageCreateFrompng("layer5.png");
				
				// Dom två andra lagrena till bakgrunden skapas.
				// samt kollar lagrens höjd och bredd
				imagecopy($im, $layer1, 0, 0, $rand_x, $rand_y, $w, $h);
				imagecopy($im, $layer2, 0, 0, $rand_x, $rand_y, $w, $h);
			}
			
			//Ger bokstäverna en lutning.
			for($i=0; $i < strlen($text); $i++) 
			{
				imagettftext($im, $fsize, mt_rand(-20, 20), $spacing, $heigt, $text_color, $font, $text{$i});
				
				// Bredden mellan bokstäverna.
				$spacing += ceil($w/5); 
			}
			
			//Lägger till oskärpa
			if (function_exists('imagefilter')) 
			{
				for ($i = 0; $i < 2; $i++) imagefilter($im, IMG_FILTER_GAUSSIAN_BLUR, $strength);
			}
			
			// Returnerar en gif-bild          
			imagegif($im);
		}

		// Kollar om koden är rätt
		public function checkCode($input)
		{
			if($input != $_SESSION[$this->session_code])
			{
				return false;
			}
				return true;
		}
		
		//Fomuläret som användaren skriver sin kod i.
		public function DoForm()
		{
			return"<form action='' method='post'>
					  Kod: <input type='text' name='code'><br>
					  <input type='submit' value='Prova din kod'>
					  <a href ='$this->nav' id='link'>Byt kod</a>
				</form>";
		}
	}
?>